#include <bits/stdc++.h>
using namespace std;

const int N = 710, L = 11;

int n, m, h[N][N][L];

int bit[N * 2];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    for(int i = 2; i < N * 2; i ++)
        bit[i] = bit[i / 2] + 1;

    int k;
    cin >> n >> m >> k;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            cin >> h[i][j][0];

    for(int l = 0; l + 1 < L; l ++)
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= m; j ++) {
                h[i][j][l + 1] =    max({h[i][j][l], 
                                    h[max(i - (1 << l), 1)][j][l], h[min(i + (1 << l), n)][j][l], 
                                    h[i][max(j - (1 << l), 1)][l], h[i][min(j + (1 << l), m)][l]});
                if(l > 0) {
                    h[i][j][l + 1] =    max({h[i][j][l + 1], 
                                        h[max(i - (1 << l - 1), 1)][max(j - (1 << l - 1), 1)][l],
                                        h[min(i + (1 << l - 1), n)][max(j - (1 << l - 1), 1)][l],
                                        h[max(i - (1 << l - 1), 1)][min(j + (1 << l - 1), m)][l],
                                        h[min(i + (1 << l - 1), n)][min(j + (1 << l - 1), m)][l]});
                }
            }
    
    vector<int> ans(n + m + 1, n * m);
    for(int i = 0, x, y; i < k; i ++) {
        cin >> x >> y;
        for(int t = 1; t <= n + m; t ++) {
            int mh = h[x][y][bit[t]], d = t - (1 << bit[t]);
            mh = max({mh, h[max(x - d, 1)][y][bit[t]], h[min(x + d, n)][y][bit[t]], h[x][max(y - d, 1)][bit[t]], h[x][min(y + d, m)][bit[t]]});
            ans[t - 1] = min(ans[t - 1], mh);
        }
    }
    for(int i = 1, p = 0; i <= n * m; i ++) {
        while(p < n + m && ans[p] < i) p ++;
        cout << (p < n + m ? p : -1) << " \n"[i == n * m];
    }
}